// axios的简单学习
import axios from 'axios'

// Promise本身也是有类型的
// new Promise<string>((resolve) => {
//   resolve('123')
// }).then((res) => {
//   console.log(res)
// })

// 模拟get请求传入参数
// axios
//   .get('http://httpbin.org/get', {
//     params: {
//       name: 'Fhup',
//       age: 18
//     }
//   })
//   .then((res) => {
//     console.log(res)
//   })
// 模拟post请求传入参数
// axios
//   .post('http://httpbin.org/post', {
//     data: {
//       name: 'Fhup',
//       age: 18
//     }
//   })
//   .then((res) => {
//     console.log(res)
//   })

// axios的request()
// axios.request({
//   url: '/xxx',
//   method: 'GET'
// })

// axios的配置选项
// 全局的配置
axios.defaults.baseURL = 'http://httpbin.org'
axios.defaults.timeout = 3000

axios
  .get('/get', {
    params: {
      name: 'Fhup',
      age: 18
    },
    // 单独的配置
    timeout: 3000,
    headers: {}
  })
  .then((res) => {
    console.log(res)
  })

// axios.all() 多个请求,一起返回
axios
  .all([
    axios.get('/get', {
      params: {
        name: 'Fhup'
      },
      timeout: 3000
    }),
    axios.post('/post', {
      data: {
        name: 'Fhf'
      }
    })
  ])
  .then(([res1, res2]) => {
    console.log(res1.data)
    console.log(res2.data)
  })

// axios的请求拦截器  .use()表示使用
// .use(fn1,fn2) fn1:请求成功  fn2:请求失败   config:默认传入配置
axios.interceptors.request.use(
  (config) => {
    // 想做的一些操作
    console.log('请求成功')
    return config
  },
  (err) => {
    console.log('请求失败')
    return err
  }
)
// axios的响应拦截器 成功: 200 失败: 400,404
axios.interceptors.response.use(
  (res) => {
    console.log('响应成功')
    return res.data
  },
  (err) => {
    console.log('响应失败')
    return err
  }
)
